from redis import StrictRedis
import logging


class Config(object):
    DEBUG = True

    # 数据库的配置信息
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/information"
    # 禁用追踪mysql：因为mysql的性能差，如果再去追踪mysql的所有修改，会再次浪费性能
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    # 创建redis存储对象
    REDIS_HOST = '127.0.0.1'
    REDIS_PORT = 6379

    # 设置 SECRET_KEY
    SECRET_KEY = 'EjpNVSNQTyGi1VvWECj9TvC/+kq3oujee2kTfQUs8yCM6xX9Yjq52v54g+HVoknA'

    # flask_session 的配置信息
    SESSION_TYPE = 'redis'  # 指定session保存到redis中
    SESSION_USE_SIGNER = True  # 让 cookie 中的 session_id 被加密签名处理
    SESSION_REDIS = StrictRedis(host=REDIS_HOST, port=REDIS_PORT)  # 使用redis实例
    PERMANENT_SESSION_LIFETIME = 60*60*24  # 设置 session的有效期，单位是秒


# 开放环境配置类   jj
class DevelopmentConfig(Config):
    """开发环境配置类，
    如果开发环境的配置和父类一致，可以直接pass"""

    DEBUG = True
    # 开发环境的日志等级为调试模式
    LOGGING_LEVEL = logging.DEBUG


# 生产环境配置类
class ProductionConfig(Config):
    """生产环境配置类，
    实际开发中，需要额外配置生产环境下的数据库和其他信息"""

    DEBUG = False

    # 生产环境的日志等级为警告模式
    LOGGING_LEVEL = logging.WARNING


# 工厂方法需要的原材料
configs = {
    'dev': DevelopmentConfig,
    'prod': ProductionConfig
}